<?php
class Envio {
    var $id_envio="-1";#` int(11) NOT NULL auto_increment,

    var $usuario=null;#` varchar(50) NOT NULL,
    var $origen=null;#` varchar(50) NOT NULL,
    var $destino=null;#` varchar(50) NOT NULL,
    var $fecha=null;#` date NOT NULL,
    var $hora=null;#` time NOT NULL,
    var $remitente=null;#` varchar(50) NOT NULL,
    var $destinatario=null;#` varchar(50) NOT NULL,

    var $prioridad="";
    var $tipo_paquete="";#` varchar(50) NOT NULL,
    var $tipo_servicio="";#v` varchar(50) NOT NULL,
    var $tipo_entrega="";#v` varchar(50) NOT NULL,
    var $forma_pago="Efectivo";#` varchar(50) NOT NULL,
    var $costo_envio=0;#` float NOT NULL,
    var $estatus="Listo para embarque";#` varchar(50) NOT NULL,
    var $descripcion_contenido="";#` text NOT NULL,
    var $conflicto=0;#` tinyint(1) NOT NULL default '0',
    var $peso=0;
    var $tipo_cambio=10;

    var $valor_declarado=null;
    var $valor_asegurado=null;
    var $cargos_adicionales=null;

    var $comentarios=null;
    var $historial=null;

	/*sql q selecciona todos los productos*/
    static $sql_defecto="SELECT e.*,vd.valor_declarado,va.valor_asegurado
						FROM envios_valor_declarado AS vd
						RIGHT JOIN ( envios_valor_asegurado va
							         RIGHT JOIN  envios e ON e.id_envio = va.id_envio 
						)ON e.id_envio = vd.id_envio ";

    function __construct() {
        $this->valor_declarado=new ValorDeclarado();
        $this->valor_asegurado=new ValorAsegurado();
        $this->cargos_adicionales=new CargoAdicional();
        $this->embarque=new Embarque();

        switch(func_num_args()) {
            case 1:	if(trim(func_get_arg(0)) =="")return;
                $this->setId( func_get_arg( 0 ) );
                $this->cargar();
                break;
        }
    }

    function insertar() {
    //    $this->destinatario->setId('-1');
        $this->destinatario->insertar();#es CLiente envio. inserta su id de cliente origianal

        $con=new Conexion();
        #agregar
        $con->ejecutar("INSERT INTO envios VALUES (null,
            '".$this->usuario."','".$this->origen."','".$this->destino."',
            '".$this->fecha->get()."','".$this->hora->get()."','".$this->remitente."','".$this->destinatario->getId()."',
            '".$this->getPrioridad()."','".$this->getTipoPaquete()."','".$this->getTipoServicio()."','".$this->getTipoEntrega()."',
            '".$this->getFormaPago()."',
            ".$this->getCosto().",'".$this->getEstatus()."','".$this->getContenido()."',".$this->getConflicto().",
            '".$this->getPeso()."',".$this->getTipoCambio().",".$this->getCostoTotal().")");
        $con->ejecutar("select max(id_envio) from envios");
        $this->setId($con->resultado(0,0));

        #dar de baja al cliente viejo, sino se me van a replicar en la bd (solo el destinatario)
        $con->ejecutar("update clientes set activo=0 where id_cliente='".$this->destinatario_original."'");
    }

    function setLlaves() {
        $this->valor_declarado->setId($this->getId());
        $this->valor_asegurado->setId($this->getId());
        $this->cargos_adicionales->setId($this->getId());
    }

    function cargarSoloEnvio() {
        $con=new Conexion();
        $con->ejecutar(Envio::$sql_defecto." where e.id_envio='".$this->getId()."'");

        $con->traerFilaPorNombre();

        $this->usuario=new Usuario($con->get("login_usuario"));
        $this->origen=new Sucursal($con->get("id_origen"));
        $this->destino=new Sucursal($con->get("id_destino"));
        $this->fecha=new Fecha($con->get("fecha_recepcion"));
        $this->hora=new Hora($con->get("hora_recepcion"));
        $this->remitente=new Cliente($con->get("id_remitente"));
        $this->destinatario=new ClienteEnvio($con->get("id_destinatario"));

        $this->setPrioridad($con->get("prioridad"));
        $this->setTipoPaquete($con->get("tipo_paquete"));
        $this->setTipoServicio($con->get("tipo_servicio"));
        $this->setTipoEntrega($con->get("tipo_entrega"));
        $this->setFormaPago($con->get("forma_pago"));
        $this->setCosto($con->get("costo_envio"));
        $this->setEstatus($con->get("estatus"));
        $this->setPeso($con->get("peso"));
        $this->setContenido($con->get("descripcion_contenido"));
        $this->setConflicto($con->get("conflicto"));
        $this->setTipoCambio($con->get("tipo_cambio"));
		
		$this->setLlaves();
        $this->valor_asegurado->setValor('');//set($con->get("valor_asegurado"));
        $this->valor_asegurado->cargar();//set($con->get("valor_asegurado"));
        $this->cargos_adicionales->setCargos(0);
        $this->cargos_adicionales->cargar();
    }

    function cargar() {
        $con=new Conexion();
        $con->ejecutar(Envio::$sql_defecto." where e.id_envio='".$this->getId()."'");

        $con->traerFilaPorNombre();

		//echo $con->get("login_usuario");
        $this->usuario=new Usuario($con->get("login_usuario"));
		//echo json_encode($this->usuario);
        $this->origen=new Sucursal($con->get("id_origen"));
        $this->destino=new Sucursal($con->get("id_destino"));
        $this->fecha=new Fecha($con->get("fecha_recepcion"));
        $this->hora=new Hora($con->get("hora_recepcion"));
        $this->remitente=new Cliente($con->get("id_remitente"));
        //echo $con->get("id_destinatario");
        $this->destinatario=new ClienteEnvio($con->get("id_destinatario"));
        
        $this->setPrioridad($con->get("prioridad"));
        $this->setTipoPaquete($con->get("tipo_paquete"));
        $this->setTipoServicio($con->get("tipo_servicio"));
        $this->setTipoEntrega($con->get("tipo_entrega"));
        $this->setFormaPago($con->get("forma_pago"));
        $this->setCosto($con->get("costo_envio"));
        $this->setEstatus($con->get("estatus"));
        $this->setPeso($con->get("peso"));
        $this->setContenido($con->get("descripcion_contenido"));
        $this->setConflicto($con->get("conflicto"));
        $this->setTipoCambio($con->get("tipo_cambio"));

        $this->setLlaves();
        $this->valor_asegurado->setValor('');//set($con->get("valor_asegurado"));
        $this->valor_declarado->setValor('');//set($con->get("valor_declarado"));
        $this->valor_asegurado->cargar();//set($con->get("valor_asegurado"));
        $this->valor_declarado->cargar();//set($con->get("valor_declarado"));


        $this->cargos_adicionales->cargar();

        $this->cargarComentarios();
        $this->cargarHistorial();

        $this->adomicilio=new ADomicilio($this->getId());

        #cargar el embarque
        //		echo "select id_embarque from envios_embarques where id_envio='".$this->getId()."'";
        $con->ejecutar("select id_embarque from envios_embarques where id_envio='".$this->getId()."'");

        if($con->traerFilaPorNombre()) {
            $this->embarque->setId($con->get('id_embarque'));
            $this->embarque->cargar();
        }
    }

    function datosNuevoEnvio() {
        $ss= new Session();
        $t= new TipoCambio();
        $o= array(	"tipo_cambio_char"=>$t->getTipoCambioString(),
            "tipo_cambio_float"=>$t->getTipoCambio(),
			"usuario"=>$ss->getId(),
            "sucursal"=> array(
	            "nombre"=>$ss->sucursal->getNombre(),
	            "prefijo"=>$ss->sucursal->getPrefijo()
            )
        );
        return json_encode($o);
    }
    function entregar() {
        $con= new Conexion();

        if($this->getTipoServicio()!="Pagado")
            $this->editarFormaPago($_POST['txt_fpago']);

        $this->editarEstatus("Entregado");

        //$ss=new Session();
        //$con->ejecutar("insert into envios_entregas values(".$this->getId().",'".$ss->getId()."','".date("Y-m-d")."','".date("H:i:s")."')");
        return "{success:true}";
    }


    function enviarADomicilio() {
        $this->adomicilio->agregar($_POST['comboEmpresa'],$_POST['txt_servicio'],$_POST['txt_fenvio'],$_POST['txt_costoenvio']);
        $this->editarEstatus("En proceso de entrega");
        echo "{success:true}";
    }

    //eliminar un usuario a la bd
    function eliminar() {
        $con=new Conexion();
        $con->ejecutar("delete from comentarios where id_propietario=".$this->getId()." and tipo_propietario='envios'");
        $con->ejecutar("delete from historial_estatus where id_envio=".$this->getId());
        $con->ejecutar("delete from envios_cargos where id_envio=".$this->getId());
        $con->ejecutar("delete from envios_valor_asegurado where id_envio=".$this->getId());
        $con->ejecutar("delete from envios_valor_declarado where id_envio=".$this->getId());
        $con->ejecutar("delete from envios_embarques where id_envio=".$this->getId());
        $con->ejecutar("delete from enviados_domicilio where id_envio=".$this->getId());
        $con->ejecutar("delete from envios_entregas where id_envio=".$this->getId());
        $con->ejecutar("delete from envios where id_envio=".$this->getId());

        $con->ejecutar("delete from clientes_verificados where id_cliente=".$this->destinatario->getId());
        $con->ejecutar("delete from clientes where id_cliente=".$this->remitente->getId());
        $con->ejecutar("delete from clientes where id_cliente=".$this->destinatario->getId());

        return "{success: true }";
    }


    function toObjeto() {
        $o = array(
            "id_envio"=> $this->getId(),
            "usuario"=> $this->usuario->toObjeto(),
            "origen"=> $this->origen->toObjeto(),
            "ids"=> $this->destino->getId(),
            "fecha"=> $this->fecha->get(),
            "hora"=> $this->hora->toString(),
            "id_remitente"=> $this->remitente->toObjeto(),
            "id_destinatario"=> $this->remitente->toObjeto(),
            "slt_tipoPaquete"=> $this->getTipoPaquete(),
            "slt_prioridad"=> $this->getPrioridad(),
            "slt_tipoServicio"=> $this->getTipoServicio(),
            "slt_tipoEntrega"=> $this->getTipoEntrega(),
            "slt_tipoPago"=> $this->getFormaPago(),
            "txt_costoEnvio"=> $this->getCosto(),
            "estatus"=> $this->getEstatus(),
            "txt_descripcion"=> toTexto($this->getContenido()),
            "conflicto"=> $this->getConflicto(),
            "txt_valorDeclarado"=> $this->valor_declarado->get(),
            "txt_valorAsegurado"=> $this->valor_asegurado->get()
        );

        //foreach($this->historial as $num=>$valor)
        //$o["historial"][$num]= $valor->toObjeto();

        //if($this->comentarios)
        //foreach($this->comentarios as $num=>$valor)
        //	$o["comentarios"][$num]= $valor->toObjeto();

        return $o;
    }

    function toJson() {
        if($this->getId()=="-1")
        //si el producto no existe
            return false;

        return json_encode($this->toObjeto());
    }
    function toForm() {
        $o = array(
			"txt_usuario"=>$this->usuario->getId(),
            "id_envio"=> $this->getId(),
            "txt_sucursal"=> $this->destino->getId(),

            "id_remitente"=> $this->remitente->getId(),
            "r_nombres"=>$this->remitente->getNombre(),
            "r_marco"=> $this->remitente->getMarcoHTMLExt(),
            "id_destinatario"=> $this->destinatario->getId(),
            "d_nombres"=>$this->destinatario->getNombre(),
            "d_marco"=>$this->destinatario->getMarcoHTMLExt(),

            "slt_tipoPaquete"=> $this->getTipoPaquete(),
            "slt_prioridad"=> $this->getPrioridad(),
            "txt_tservicio"=> $this->getTipoServicio(),
            "txt_tentrega"=> $this->getTipoEntrega(),
            "slt_tipoPago"=> $this->getFormaPago(),
            'txt_fpago'=>$this->getFormaPago(),
            "txt_costoe"=> $this->getCosto(),
            "txt_descripcion"=> toTexto($this->getContenido()),
            "txt_fecharr"=> $this->fecha->get(),

            "tipo_cambio"=>$this->getTipoCambio(),
            "txt_peso"=>$this->getPeso(),
            "slt_tipoPeso"=>'Kg',

            "prefijo"=>$this->getPrefijo()
        );

        #valor asegurado
        if(!$this->valor_asegurado->vacio()) {
            $o["txt_vdasegurado"]=$this->valor_asegurado->getValor();
            $o["slt_Moneda_asegurado"]=$this->valor_asegurado->getMoneda();
        }
        #valor declarado
        if(!$this->valor_declarado->vacio()) {
            $o["txt_vdeclarado"]=$this->valor_declarado->getValor();
            $o["slt_Moneda_declarado"]=$this->valor_declarado->getMoneda();
        }

        #cargos adicionales
        if(!$this->cargos_adicionales->vacio()) {
            $o["txt_cargos_adicionales"]=$this->cargos_adicionales->getCargos();
            $o["txt_dcargos_adicionales"]=$this->cargos_adicionales->getDescripcion();
        }


        return ereg_replace('[[:space:]]+', ' ', '{"success":true,"data":'. str_replace("\\\\\\", "\\",json_encode($o)).',"cargar":true}');
    }
	function agregarEditame() {
		
		$ss=new Session();
        $this->usuario='';
        $this->origen=$ss->sucursal->getId();
        $this->destino=0;
        $this->fecha=new Fecha();
        $this->hora=new Hora();
        
        $this->setTipoPaquete('');
        $this->setTipoServicio('');
        $this->setPrioridad('');
        $this->setTipoEntrega('');

        $this->setFormaPago('');
        $this->setCosto(0);
        $this->setEstatus('');
        $this->setContenido('');

        $t= new TipoCambio();
        $this->setTipoCambio($t->getTipoCambio());

        #el peso se guarda en kilos siempre
        $this->setPeso(0);
        
		
		$con=new Conexion();
        #agregar
        $con->ejecutar("INSERT INTO envios VALUES (null,
            '".$this->usuario."','".$this->origen."','".$this->destino."',
            '".$this->fecha->get()."','".$this->hora->get()."','0','0',
            '','','','','',0,'".$this->getEstatus()."','".$this->getContenido()."',0,'0',".$this->getTipoCambio().",0)");
        $con->ejecutar("select max(id_envio) from envios");
        $this->setId($con->resultado(0,0));
		

        return "{success: true,id:".$this->getId().",prefijo:'".$ss->sucursal->getPrefijo()."'}";
    }

    function agregar() {
    	#parcho el error del ext
		$_POST['txt_cargos_adicionales']=($_POST['txt_cargos_adicionales']=="0.00 Dlls")?0:$_POST['txt_cargos_adicionales'];
		
        $ss=new Session();
		$user=new Usuario( strtolower($_POST['txt_usuario']));
        $this->usuario=$user->getId();
        $this->origen=$user->sucursal->getId();
        $this->destino=($ss->sucursal->getPrefijo()!="EP")?14:$_POST['txt_sucursal'];
        $this->fecha=new Fecha($_POST['txt_frecibo']);
        $this->hora=new Hora();
        $this->remitente= $_POST['id_remitente'];
        $this->destinatario= new ClienteEnvio($_POST['id_destinatario']);
		$this->insertarConocido($_POST['id_remitente'],$_POST['id_destinatario']);
        $this->setTipoPaquete(trim($_POST['slt_tipoPaquete']));
        $this->setTipoServicio(trim($_POST['txt_tservicio']));
        $this->setPrioridad(trim($_POST['txt_prioridad']));
        $this->setTipoEntrega(trim($_POST['txt_tentrega']));
        $_POST['txt_fpago']=(trim($_POST['txt_tservicio'])!="Pagado")?"":$_POST['txt_fpago'];
        $this->setFormaPago(trim($_POST['txt_fpago']));
        $this->setCosto(trim($_POST['txt_costoe']));
        $this->setEstatus("Listo para embarque");
        $this->setContenido($_POST['txt_descripcion']);

        $this->setTipoCambio($_POST['tipo_cambio']);

        #el peso se guarda en kilos siempre
        $this->setPeso(aKilos($_POST['txt_peso'],$_POST['slt_tipoPeso']));
        $this->insertar();

        $this->setLlaves();
        $this->valor_asegurado->agregar( $_POST['txt_vdasegurado'],$_POST['slt_Moneda_asegurado'] );
        $this->valor_declarado->agregar( $_POST['txt_vdeclarado'],$_POST['slt_Moneda_asegurado']);
        $this->cargos_adicionales->agregar($_POST['txt_cargos_adicionales'],$_POST['txt_dcargos_adicionales']);

		new Conexion("update envios set costo_total=".$this->getCostoTotal()." where id_envio='".$this->getId()."'");
        //agregar el historial
        $this->agregarEstatus($this->getEstatus());

        //		$this->agregarComentario(trim($_POST['nota']),trim($_POST['slt_tipoNota']));

        return "{success: true,id:".$this->getId().",prefijo:'".$user->sucursal->getPrefijo()."'}";
    }
	function editar(){
		#parcho el error del ext
		$_POST['txt_cargos_adicionales']=($_POST['txt_cargos_adicionales']=="0.00 Dlls")?0:$_POST['txt_cargos_adicionales'];
		
		//destino
		$ss=new Session();
		$user=new Usuario( strtolower($_POST['txt_usuario']));
		$con=new Conexion();
		$d=($ss->sucursal->getPrefijo()!="EP")?14:$_POST['txt_sucursal'];
		if($this->isEditame()){
        	$this->destinatario= new ClienteEnvio($_POST['id_destinatario']);
			$this->destinatario->insertar();#es CLiente envio. inserta su id de cliente origianal

			$con->ejecutar("update envios set id_remitente='".$_POST['id_remitente']."',id_destinatario='".$this->destinatario->getId()."'
				where id_envio='".$this->getId()."'");
			
			$this->insertarConocido($_POST['id_remitente'],$_POST['id_destinatario']);
			
			$this->editarEstatus("Listo para embarque");	
		}
		
		$con->ejecutar("update envios set login_usuario ='".$user->getId()."', id_origen='".$user->sucursal->getId()."',id_destino='".$d."',
				fecha_recepcion='".$_POST['txt_frecibo']."',hora_recepcion='".date("H:i:s")."'
		where id_envio='".$this->getId()."'");
				
		$this->editarPrioridad(trim($_POST['txt_prioridad']));
		$this->editarTipoPaquete($_POST['slt_tipoPaquete']);
		$this->editarTipoServicio($_POST['txt_tservicio']);
		$this->editarTipoEntrega($_POST['txt_tentrega']);
		$_POST['txt_fpago']=(trim($_POST['txt_tservicio'])!="Pagado")?"":$_POST['txt_fpago'];
		$this->editarFormaPago(toHtml($_POST['txt_fpago']));
		$this->editarCosto($_POST['txt_costoe']);
		$this->editarContenido($_POST['txt_descripcion']);

		$this->setLlaves();
        $this->editarPeso(aKilos($_POST['txt_peso'],$_POST['slt_tipoPeso']));
		$cambio_seguro=$this->valor_asegurado->editar($_POST['txt_vdasegurado'],$_POST['slt_Moneda_asegurado']);
		$this->valor_declarado->editar( $_POST['txt_vdeclarado'],$_POST['slt_Moneda_asegurado']);
		$cambio_cadicionales=$this->cargos_adicionales->editar($_POST['txt_cargos_adicionales'],$_POST['txt_dcargos_adicionales']);
		
		
		if($cambio_seguro || $cambio_cadicionales)
			new Conexion("update envios set costo_total=".$this->getCostoTotal()." where id_envio='".$this->getId()."'");
		
		//return "{success: true,id:".$this->getId().",prefijo:'".$user->sucursal->getPrefijo()."'}";
		return "{success: true,editado:true}";
	}
	
	function editarDestino($x){
		if($x != $this->destino->getId()){
			new Conexion("update envios set id_destino='".$x."' where id_envio='".$this->getId()."'");
		}
	} 
	function editarPeso($kilos){
		if($this->getPeso()!=$kilos)
			new Conexion("update envios set peso='".$kilos."' where id_envio='".$this->getId()."'");
	}

	
	function insertarConocido($x,$y){
		$con=new Conexion();
		$con->ejecutar("select * from conocidos where remitente='".$x."'");
		if($con->vacio())
			$con->ejecutar("insert into conocidos values('".$x."','".$y."')");
		
		$con->ejecutar("select * from conocidos where remitente='".$y."'");
		if($con->vacio())
			$con->ejecutar("insert into conocidos values('".$y."','".$x."')");
	}
    function cargarComentarios() {
        $con=new Conexion();
        $con->ejecutar("select * from comentarios where id_propietario='".$this->getId()."' and tipo_propietario='envios' ");

        while($con->traerFilaPorNombre())
            $this->comentarios[count($this->comentarios)]=new Comentario($con->get('id_comentario'));
    }
    function cargarHistorial() {
        $con=new Conexion();
        $con->ejecutar("select * from historial_estatus where id_envio='".$this->getId()."'");
        while($con->traerFilaPorNombre())
            $this->historial[count($this->historial)]=new Historial($con->get('id_estatus'));
    }

    function agregarComentario($co,$pu) {
        if(trim($co)!="") {
            $this->comentarios[count($this->comentarios)]=new Comentario($this->getId(),$co,$pu,"envios");
            if($pu=="2")
            //si es una nota de conflicto
                $this->editarConflicto(1);
        }
        return "{success:true}";
    }
    function agregarEstatus($co) {
        $this->historial[count($this->historial)]=new Historial($this->getId(),$co);
    }


    function getComentarios() {
        $respuesta= '{"success":true,"numFilas":'.(count($this->comentarios)).',"data":[';
        foreach($this->comentarios as $comentario)
            $respuesta.=json_encode($comentario->toVista()).",";

        #si hay almenos una fila, nos queda una coma al final. Hay que quitarla
        if(count($this->comentarios)>0)
            $respuesta = substr($respuesta,0,strlen($respuesta)-1);

        return $respuesta."]}";
    }

    function getHistorial() {
        $respuesta= '{"success":true,"numFilas":'.count($this->historial).',"data":[';
        foreach($this->historial as $estatus)
            $respuesta.=json_encode($estatus->toVista()).",";

        #si hay almenos una fila, nos queda una coma al final. Hay que quitarla
        if(count($this->historial)>0)
            $respuesta = substr($respuesta,0,strlen($respuesta)-1);

        $respuesta.= "]}";
        return $respuesta;
    }

    function quitarConflicto() {
        new Conexion("delete from comentarios where tipo_propietario='envios' and publico=2 and id_propietario=".$this->getId());
        $this->editarConflicto(0);
    }

    function getInfoTab($id_envio) {

        $titleAnt='';
        $titleSig='';

        $con= new Conexion();
        $con->ejecutar("select min(id_envio) as id from envios e where e.id_envio>".($id_envio));
        if($con->traerFilaPorNombre() && $con->get("id")!="") {
            $con->ejecutar("select * from envios e, sucursales s where e.id_origen=s.id_sucursal and e.id_envio=".$con->get("id"));
            if($con->traerFilaPorNombre())
                $titleSig=$con->get("prefijo")."-".$con->get("id_envio");
        }

        //echo "select max(id_envio) as id from envios e where e.id_envio<".($id_envio);
        $con->ejecutar("select max(id_envio) as id from envios e where e.id_envio<".($id_envio));
        if($con->traerFilaPorNombre()  && $con->get("id")!="") {
            $con->ejecutar("select * from envios e, sucursales s where e.id_origen=s.id_sucursal and e.id_envio=".$con->get("id"));
            if($con->traerFilaPorNombre())
                $titleAnt=$con->get("prefijo")."-".$con->get("id_envio");
        }
        $con->ejecutar(" select * from (select * from envios e, sucursales s
									where e.id_origen=s.id_sucursal) as ee
							LEFT JOIN  enviados_domicilio ed ON ee.id_envio = ed.id_envio where  ee.id_envio=".($id_envio));
        $con->traerFilaPorNombre();
        $prefijo=$con->get("prefijo");
        $estatus=$con->get("estatus");
        $conflicto=$con->get("conflicto");
        $id_cliente_destinatario=$con->get("id_destinatario");
        $tipo_servicio=$con->get("tipo_servicio");
        $tipo_entrega=$con->get("tipo_entrega");
        $rastreo_ups=($con->get("id_transportadora")=="" || $con->get("id_transportadora")!= 1)?false:true;

        $con->ejecutar("select max(id_envio) from envios ");
        $max_id_envio=$con->resultado(0,0);


        #si se envio a domicilio (en proceso de entrega)...
        #	que el combo  de estatus NO despliegue la opcion "EN proceso de entrega"
        $con->ejecutar("select * from enviados_domicilio where id_envio='".$id_envio."' ");
        if(!$con->vacio())
            $tipo_entrega="Ocurre";

        $x= array(
            "titleAnt" =>$titleAnt,
            "titleSig" =>$titleSig,
            "prefijo" =>$prefijo,
            "max_id_envio" =>$max_id_envio,
            "estatus" =>$estatus,
            "conflicto" =>$conflicto,
            "rastreo_ups" =>$rastreo_ups,
            "id_cliente_destinatario"=>$id_cliente_destinatario,
            "tipo_servicio" =>$tipo_servicio,
            "tipo_entrega" =>$tipo_entrega
        );
        return json_encode($x);
    }



    function setId($_x) {$this->id_envio=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setTipoPaquete($_x) {$this->tipo_paquete=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setTipoServicio($_x) {$this->tipo_servicio=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setTipoEntrega($_x) {$this->tipo_entrega=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setPrioridad($_x) {$this->prioridad=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setFormaPago($_x) {$this->forma_pago=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x); }
    function setCosto($_x) {$this->costo_envio=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setEstatus($_x) {$this->estatus=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setContenido($_x) {$this->descripcion_contenido=(trim($_x)=="" || $_x=="null" || $_x==null) ?"" : trim($_x);}
    function setConflicto($_x) {$this->conflicto= $_x;}
    function setPeso($_x) {$this->peso= $_x;}
    function setTipoCambio($_x) {$this->tipo_cambio= $_x;}



    function getId() {return $this->id_envio;}
    function getTipoPaquete() {return $this->tipo_paquete;}
    function getPrioridad() {return $this->prioridad;}
    function getTipoServicio() {return $this->tipo_servicio;}
    function getTipoEntrega() {return $this->tipo_entrega;}
    function getFormaPago() {return $this->forma_pago;}
    function getCosto() {return $this->costo_envio;}
    function getCostoTotal() {
    	return $this->costo_envio+$this->cargos_adicionales->getCargos()+$this->getCostoSeguro();;
	}
    function getCostoPesos() {return $this->getCostoTotal()* $this->getTipoCambio();}
    function getEstatus() {return $this->estatus;}
    function getContenido() {return $this->descripcion_contenido;}
    function getConflicto() {return $this->conflicto;}
    function getPeso() {return $this->peso;}
    function getTipoCambio() {return $this->tipo_cambio;}
    function getPrefijo() {return $this->origen->getPrefijo();}
    function verificado() {return $this->destinatario->getVerificado();}
	function getCostoSeguro() {#en Dlls
		if(!$this->valor_asegurado->vacio()){
			if($this->valor_asegurado->getMoneda()=="Pesos")
				return ($this->valor_asegurado->getValor()/$this->getTipoCambio())*.15;
			return ($this->valor_asegurado->getValor())*.15;	
		}
		return 0;
	}

    function getEstatusConConflicto() {
        if($this->getConflicto())
            return "Conflicto";
        return $this->getEstatus();
    }
    function getEstatusHTML() {
        return '<div class="'.$this->_claseEstatus().'">'.$this->estatus.'</div>';
    }
    function _claseEstatus() {
        if($this->getConflicto())
            return "labelEstatusConflicto";
        switch($this->getEstatus()) {
            case "Listo para embarque": return "labelEstatusListoEntregar";
            case "En transito": return "dembarque";
            case "Listo para entregar": return "labelEstatusListoEmbarque";
            case "En proceso de entrega": return "labelEstatusEnProceso";
            case "Entregado": return "labelEstatusentregado";
            case "Decomisado": return "labelEstatusDecomisado";
            case "No reclamado": return "labelNoreclamado";
        }
    }

	
	/*Funciones editar*/	
    function editarUsuarioResponsable($w) {
        if($w != $this->usuario->getId()) {
            $this->usuario=new Usuario($w);
            new Conexion("UPDATE envios SET login_usuario='".$this->usuario->getId()."' where id_envio='".$this->getId()."'");
        }
    }

    function editarPrioridad($w) {
        if($w != $this->getPrioridad()) {
            $this->setPrioridad($w);
            new Conexion("UPDATE envios SET prioridad='".$this->getPrioridad()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarFechaRecepcion($w) {
        if($w != $this->fecha->get()) 
            new Conexion("UPDATE envios SET fecha_recepcion='".$w."' where id_envio='".$this->getId()."'");
    }
    function editarHoraRecepcion($w) {
        if($w != $this->getHoraRecepcion()) {
            $this->hora_recepcion=$w;
            new Conexion("UPDATE envios SET hora_recepcion='".$this->getHoraRecepcion()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarIdRemiente($w) {
        if($w != $this->getIdRemiente()) {
            $this->id_remitente=$w;
            new Conexion("UPDATE envios SET id_remitente='".$this->getIdRemiente()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarIdDestinatario($w) {
        if($w != $this->getIdDestinatario()) {
            $this->id_destinatario=$w;
            new Conexion("UPDATE envios SET id_destinatario='".$this->getIdDestinatario()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarTipoPaquete($w) {
        if($w != $this->getTipoPaquete()) {
            $this->tipo_paquete=$w;
            new Conexion("UPDATE envios SET tipo_paquete='".$this->getTipoPaquete()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarTipoServicio($w) {
        if($w != $this->getTipoServicio()) {
            $this->tipo_servicio=$w;
            new Conexion("UPDATE envios SET tipo_servicio='".$this->getTipoServicio()."' where id_envio='".$this->getId()."'");
        }
    }
	function editarTipoEntrega($w){
		if($w != $this->getTipoEntrega()) {
            new Conexion("UPDATE envios SET tipo_entrega='".$w."' where id_envio='".$this->getId()."'");
        }
	}
    function editarFormaPago($w) {
        if($w != $this->getFormaPago()) {
            $this->forma_pago=$w;
            new Conexion("UPDATE envios SET forma_pago='".$this->getFormaPago()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarCosto($w) {
        if($w != $this->getCosto()) {
            $this->costo_envio=$w;
            new Conexion("UPDATE envios SET costo_envio='".$this->getCosto()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarEstatus($w) {
        if($w != $this->getEstatus()) {
            $this->estatus=$w;
            $this->agregarEstatus($w);
            new Conexion("UPDATE envios SET estatus='".$this->getEstatus()."' where id_envio='".$this->getId()."'");
        }
    }
    function editarContenido($w) {
        if($w != $this->getContenido()) {
            new Conexion("UPDATE envios SET descripcion_contenido='".$w."' where id_envio='".$this->getId()."'");
        }
    }
    function editarConflicto($w) {
        if($w != $this->getConflicto()) {
            $this->setConflicto($w);
            new Conexion("UPDATE envios SET conflicto=".$this->getConflicto()." where id_envio='".$this->getId()."'");
        }
        return "{success:true}";
    }


    function getEstatusEstadisticas($condiciones="") {
        $con=new Conexion();
        $condiciones=(empty($condiciones))?$this->filtroEstatus($_POST["condiciones"]):$condiciones;
        $sql=$this->filtroEstatus($condiciones);
        //		echo $sql;
        $con->ejecutar($sql);
        $con->traerFilaPorNombre();

        $o = array(
            array("Para embarque",$con->get('embarque')),
            array("En transito",$con->get('transito')),
            array("Para entregar",$con->get('listientregar')),
            array("Proceso entrega",$con->get('enproceso')),
            array("En conflicto",$con->get('conflicto')),
        );
        return $o;
    }
	function isEditame(){
		#checa si es envio editame
		if($this->destinatario->getId()==-1)
			return true;
		return false;
	}
    function toGrid() {
    	if(!$this->isEditame())
        $o = array(
            "costodlls"=>$this->getCosto(),
            "costototaldlls"=>$this->getCostoTotal(),
            "costopesos"=>$this->getCostoPesos(),
            "tipocambio"=>$this->getTipoCambio(),
            "id"=>$this->getId(),
            "estatus"=>$this->getEstatusConConflicto(),
            "id_envio"=> '<font class="grid_guia">'. $this->getPrefijo()."-".$this->getId().'</font>'.'<div class="grid_guia_fecha">'.$this->fecha->toMDA()." ".$this->hora->toString().'</div><div class="grid_guia_estatus">'.$this->getEstatusHTML().'</div>',
            "remitente"=> str_replace('\\"','"','<div style="position:relative;">'.$this->remitente->getMarcoDireccionHTML()).'<div style="float:left;" class="grid_sucursal">'.$this->origen->getNombre().'</div></div>',//getMarcoHTML(),
            "destinatario"=> str_replace('\\"','"','<div style="position:relative;">'.$this->destinatario->getMarcoDireccionHTML()).'<div style="float:left;" class="grid_sucursal">'.$this->destino->getNombre().'</div></div>',//getMarcoHTML(),//
            //	"servicio"=> $this->getTipoServicio()
        );
		else
			$o = array(
	            "prefijo"=>$this->getPrefijo(),
                "costodlls"=>$this->getCosto(),
                "costototaldlls"=>$this->getCostoTotal(),
                "costopesos"=>$this->getCostoPesos(),
                "tipocambio"=>$this->getTipoCambio(),
	            "id"=>$this->getId(),
	            "estatus"=>"Editame",
	            "id_envio"=> '<font class="grid_guia">'. $this->getPrefijo()."-".$this->getId().'</font>'.'<div class="grid_guia_fecha">'.$this->fecha->toMDA()." ".$this->hora->toString().'</div><div class="grid_guia_estatus">'.$this->getEstatusHTML().'</div>',
	            "remitente"=> "Editame",
	            "destinatario"=> "Editame"
	            //	"servicio"=> $this->getTipoServicio()
	        );
		/*
		if($this->getConflicto()==1)
			$o["id_envio"].="<br>Conflicto";
		else
			$o["id_envio"].="<br>".$this->getEstatus();
			*/

/*		if(! $this->embarque->vacio()){
			if($this->embarque->aereolinea->getLogo()!="")
				$o["servicio"] ='<img src="img/'.$this->embarque->aereolinea->getLogo().'" >';
			else
				$o["servicio"]= $this->embarque->aereolinea->getNombre();
			$o['servicio'].='<div class="grid_guia_fecha">'.$this->embarque->fecha->toMDA().'</div>';			
		}else
			$o['servicio'].='NO EMBARCADO';
*/
        $o["costo"]='<div class="grid_costoe">'. formatMoney($this->getCostoTotal()).'</div>';

        if( strtolower($this->getTipoServicio())=="pagado")
            $o["costo"].="<div class=\"grid_costoepesos\">".formatMoney($this->getCostoTotal()*$this->getTipoCambio())." Pesos</div>";

        $o["costo"].='<div class="grid_costotservicio">';

        if(strtolower($this->getTipoServicio()) == "pagado")
            $o["costo"].=$this->getTipoServicio();
        else
            $o["costo"].="<font color=red><b>".strtoupper($this->getTipoServicio())."</b>";

        $o["costo"].="</div></div>";

        return $o;
    }

    function toGridEmbarque() {
        $o = array(
            "prefijo"=>$this->getPrefijo(),
            "id"=>$this->getId(),
            "estatus"=>$this->getEstatusConConflicto(),
            "peso"=>$this->getPeso(),
            "id_envio"=> '<font class="grid_guia">'. $this->getPrefijo()."-".$this->getId().'</font>'.'<div class="grid_guia_fecha">'.$this->fecha->toMDA()." ".$this->hora->toString().'</div><div class="grid_guia_estatus">'. $this->getPeso()."Kg/".ktol($this->getPeso())."Lb".'</div>',
            "remitente"=> str_replace('\\"','"',$this->remitente->getMarcoDireccionHTML()).'<br><br><br><div class="grid_sucursal">'.$this->origen->getNombre().'</div>',//getMarcoHTML(),
            "destinatario"=> str_replace('\\"','"',$this->destinatario->getMarcoDireccionHTML()).'<br><br><br><br><div class="grid_sucursal">'.$this->destino->getNombre().'</div>',//getMarcoHTML(),//
            "completo"=> 'Completo'
        );
        return $o;
    }

    function listarEmbarque() {
        $con=new Conexion();

        $con->ejecutar("select * from envios where estatus='Listo para embarque' order by id_envio DESC");
        $respuesta=array("numFilas"=>$con->numFilasResultado());

        //		$con->ejecutar($query);//.$paginador);

        $c=0;
        while($con->traerFilaPorNombre()) {
            $this->setId($con->get("id_envio"));
            $this->cargar();
            $respuesta["data"][count($respuesta["data"])]= $this->toGridEmbarque();#esto es como un push($this->toGrid())
            $c+=$this->getCosto();
        }
        #imprimir el resultado
        return json_encode($respuesta);
    }

    function listarGrid($pagina,$query,$costo_envio) {
        $con=new Conexion();

        $con->ejecutar($query);
        $respuesta=array("numFilas"=>$con->numFilasResultado());

        $con->ejecutar($costo_envio);
        $respuesta["costo_total"]="$".number_format($con->resultado(0,0),2);


        if( !isset($_POST['sin_pagina']))
            $paginador=" limit ".(($pagina-1)*PAGINA_CUANTOS).",".PAGINA_CUANTOS.";";
        $con->ejecutar($query.$paginador);

        $c=0;

        $arr_user=array();
        while($fila=$con->traerFilaPorNombre()) {
            array_push($arr_user,$fila);
	    }

        $respuesta["costo_pagina"]="$".number_format($c,2);
        $respuesta["data"]= $arr_user;


/*
        while($con->traerFilaPorNombre()) {
            $this->setId($con->get("id_envio"));
            $this->cargarSoloEnvio();//cargar();
            $respuesta["data"][count($respuesta["data"])]= $this->toGrid();#esto es como un push($this->toGrid())
            $c+=$this->getCostoTotal();
        }
        $respuesta["costo_pagina"]="$".number_format($c,2);
        #calcular las estadisticas de los estatus
        $u=$this->getEstatusEstadisticas();
        $respuesta["estatus_estadisticas"]= $u;*/
        
        #imprimir el resultado
        return json_encode($respuesta);
    }

    function listar($pagina,$parametros) {

        $sql=$this->filtroSQL($parametros,"*");
        $sql_costo=$this->filtroSQL($parametros,"sum(costo_total)");

        //echo $sql;exit;
        return $this->listarGrid($pagina,$sql,$sql_costo);
    }


    function filtroEstatus($parametros) {

        $sql="(select id_envio,estatus,conflicto from (".$this->filtroSQL($parametros,"*").") as e) as w";

        return "SELECT *
		FROM (
		
		SELECT count( estatus ) AS embarque
		FROM ".$sql."
		WHERE estatus = 'Listo para embarque'
		) AS em, (
		
		SELECT count( estatus ) AS transito
		FROM ".$sql."
		WHERE estatus = 'En transito'
		) AS tr, (
		
		SELECT count( estatus ) AS listientregar
		FROM ".$sql."
		WHERE estatus = 'Listo para entregar'
		) AS le, (
		
		SELECT count( estatus ) AS enproceso
		FROM ".$sql."
		WHERE estatus = 'En proceso de entrega'
		) AS pr, (
		
		SELECT count( estatus ) AS conflicto
		FROM ".$sql."
		WHERE conflicto =1
		) AS co";
    }
    function filtroSQL($p,$consulta) {
    //echo "[".$p."]";exit;
        $query="select ".$consulta." from (".Envio::$sql_defecto.") as w ";
        if(trim($p)=="" || trim($p)=="{}")
        //hacer la consulta sin condiciones
            return $query." where w.estatus!='Entregado' && w.estatus!='Decomisado' && w.estatus!='No reclamado' order by id_envio desc";

        $p=json_decode( fromURL($p) );


        if(isset($p->id_embarque))
            return "select e.* from envios_embarques em,envios e where id_embarque=".$p->id_embarque." and e.id_envio=em.id_envio";


        if(isset($p->txt_trans_fecha_inicio) || isset($p->txt_trasnportadora_filtro) || isset($p->txt_trans_fecha_fin))
            $query.= ",enviados_domicilio ed ";

        if(isset($p->txt_trasnportadora_filtro))
            $query.= ",transportadora t ";

        if(isset($p->cdestino))
            $query.= ",direcciones dir ";

        if(isset($p->remitente) || isset($p->destinatario))
            $query.=", persona_nombres pn where pn.tabla='clientes' ";
        else
            $query.=" WHERE w.id_envio>0";

        if(isset($p->txt_trans_fecha_inicio) || isset($p->txt_trasnportadora_filtro) || isset($p->txt_trans_fecha_fin))
            $query.= " and w.id_envio=ed.id_envio ";

        if(isset($p->cdestino))
            $query.= " and w.id_destinatario=dir.id_propietario and dir.tabla='clientes' and dir.ciudad like '%".$p->cdestino."%' and tipo_entrega='A domicilio' ";

        if(isset($p->txtId))
        //si nombre tiene algo
            $query.= " and w.id_envio='".$p->txtId."' ";
        if(isset($p->txt_fecha_inicio_filtro))
            $query.= " and w.fecha_recepcion>='".$p->txt_fecha_inicio_filtro."' ";
        if(isset($p->txt_fecha_fin_filtro))
            $query.= " and w.fecha_recepcion<='".$p->txt_fecha_fin_filtro."' ";
        if(isset($p->comboSucDestinoFiltro))
            $query.= " and w.id_origen='".$p->comboSucDestinoFiltro."' ";
        if(isset($p->sucursal_destino))
            $query.= " and w.id_destino='".$p->sucursal_destino."' ";
        if(isset($p->tipo_servicio))
            $query.= " and w.tipo_servicio='".$p->tipo_servicio."' ";
        if(isset($p->txt_filtro_estatus) && $p->txt_filtro_estatus!="Todos")
            if(strtolower($p->txt_filtro_estatus=="conflicto"))
                $query.= " and w.conflicto=1 ";
            else
                $query.= " and w.estatus='".$p->txt_filtro_estatus."' ";
        if(isset($p->login_usuario))
            $query.= " and w.login_usuario='".$p->login_usuario."' ";

        if(isset($p->remitente) && !isset($p->destinatario))
            $query.= " and  ".Persona::buscarNombre($p->remitente)." and pn.id_propietario=w.id_remitente";
        if(!isset($p->remitente) && isset($p->destinatario))
            $query.= " and ".Persona::buscarNombre($p->destinatario)." and pn.id_propietario=w.id_destinatario";


        #enviados a domicilio
        if(isset($p->txt_trasnportadora_filtro))
            $query.= " and t.id_transportadora=ed.id_transportadora and t.nombre='".$p->txt_trasnportadora_filtro."'";

        if(isset($p->txt_trans_fecha_inicio))
            $query.= " and ed.fecha>='".$p->txt_trans_fecha_inicio."' ";

        if(isset($p->txt_trans_fecha_fin))
            $query.= " and ed.fecha<='".$p->txt_trans_fecha_fin."' ";


        #if(isset($p->remitente) && isset($p->destinatario))
        #$query.= " and (".Persona::buscarNombre($p->remitente)." and ".Persona::buscarNombre($p->destinatario).") and (pn.id_propietario=w.id_remitente or pn.id_propietario=w.id_destinatario)";

        if(!isset($p->txtId) && $p->txt_filtro_estatus!="Todos" && $p->txt_filtro_estatus!="Entregado" && $p->txt_filtro_estatus!="Decomisado" && $p->txt_filtro_estatus!="No reclamado")
            $query.=" and w.estatus!='Entregado' && w.estatus!='Decomisado' && w.estatus!='No reclamado'";
        $query.=" order by w.id_envio desc";

        //echo $query;
        //hacer la consulta
        return $query;
    }


    function exportarExcel($p="") {


        $query= "select * from (".$this->filtroSQL($p,"*").") as q, sucursales s
				where q.id_origen=s.id_sucursal";
       // echo $query;

        #REPORTE GENERAL
        $fp_general = fopen("xls/generalq.csv","w+");
        $fp_cobrar = fopen("xls/cobrarq.csv","w+");
        $fp_pagado = fopen("xls/pagadoq.csv","w+");
        if(!$fp_general || !$fp_cobrar || !$fp_pagado)
            return '{success:false,error:"Lo siento, no se pudo abrir el archivo para escritura"}';

        $con=new Conexion();

        #PAGADO
        $con->ejecutar($query);
        fwrite($fp_general,"FECHA,GUIA,REMITENTE,DESTINATARIO,RECEPTORA,DESTINO,TOTAL DOLARES,TIPO DE CAMBIO,TOTAL PESOS\n");
        fwrite($fp_cobrar,"FECHA,GUIA,REMITENTE,DESTINATARIO,RECEPTORA,FORMA DE PAGO,TOTAL DOLARES\n");
        fwrite($fp_pagado,"FECHA,GUIA,REMITENTE,DESTINATARIO,RECEPTORA,FORMA DE PAGO,TOTAL DOLARES,TIPO DE CAMBIO,TOTAL PESOS\n");

        $total_general=array(0,0);
        $total_cobrar=0;
        $total_pagado=array(0,0);

        $fecha_aux= new Fecha();
        $con_aux= new Conexion();

    //   echo  $con->numFilasResultado();
        while($con->traerFilaPorNombre()) {
		//echo $con->get("fecha_recepcion")."---/";
            set_time_limit(0);

            $fecha_aux->set($con->get("fecha_recepcion"));

            #consultar el nombre del remitente
            $con_aux->ejecutar("select concat(pn.nombres,' ',pn.apellidos) from persona_nombres pn
						where pn.id_propietario='".$con->get("id_remitente")."' and pn.tabla='clientes'");
            $remitente=$con_aux->resultado(0,0);


            #consultar el nombre del destinatario
            $con_aux->ejecutar("SELECT concat( pn.nombres,' ',pn.apellidos ) , d.ciudad
								FROM persona_nombres pn
								LEFT JOIN direcciones d ON d.id_propietario = pn.id_propietario
								WHERE pn.id_propietario = '".$con->get("id_destinatario")."'
								AND pn.tabla = 'clientes'
								");

            $destinatario=$con_aux->resultado(0,0);
            $destinatario_ciudad=$con_aux->resultado(0,1);


            #GENERAL
            //echo $con->get("prefijo")."-".$con->get("id_envio")." ___ ";
            fwrite($fp_general,$fecha_aux->toMDA().",".$con->get("prefijo")."-".$con->get("id_envio").","
                .$remitente.",".$destinatario.","
                .$con->get("nombre").",".$destinatario_ciudad.","
                .$con->get("costo_total").",".$con->get("tipo_cambio").",".($con->get("costo_total")*$con->get("tipo_cambio"))."\n" );
            $total_general[0]+=$con->get("costo_total");
            $total_general[1]+=$con->get("costo_total")*$con->get("tipo_cambio");


            if( strtolower($con->get("tipo_servicio"))=="por cobrar") {
            #POR COBRAR
                fwrite($fp_cobrar,$fecha_aux->toMDA().",".$con->get("prefijo")."-".$con->get("id_envio").","
                    .$remitente.",".$destinatario.","
                    .$con->get("nombre").",Por cobrar,"
                    .$con->get("costo_total")."\n" );
                $total_cobrar+=$con->get("costo_total");
            }else {
            #PAGADO
                fwrite($fp_pagado,$fecha_aux->toMDA().",".$con->get("prefijo")."-".$con->get("id_envio").","
                    .$remitente.",".$destinatario.","
                    .$con->get("nombre").",Pagado,"
                    .$con->get("costo_total").",".$con->get("tipo_cambio").",".($con->get("costo_total")*$con->get("tipo_cambio"))."\n" );
                $total_pagado[0]+=$con->get("costo_total");
                $total_pagado[1]+=$con->get("costo_total")*$con->get("tipo_cambio");
            }

        }

        #GENERAL
        fwrite($fp_general,",,,,,,".$total_general[0].",,".$total_general[1] );

        #POR COBRAR
        fwrite($fp_cobrar,",,,,,,".$total_cobrar);

        #PAGADO
        fwrite($fp_pagado,",,,,,,".$total_pagado[0].",,".$total_pagado[1] );


        fclose($fp_general);
        fclose($fp_cobrar);
        fclose($fp_pagado);
        require('zipArchive.lib.php');
        $zip = new zipArchive();
        # //Anadimos el archivo a comprimir
        $zip->addFile('xls/generalq.csv', 'general.csv');
        $zip->addFile('xls/cobrarq.csv', 'cobrar.csv');
        $zip->addFile('xls/pagadoq.csv', 'pagado.csv');
        #
        $pathSave = 'xls/reportes.zip';
        # //Guargamos el archivo
        $zip->saveZip($pathSave);

        return '{success:true}';
    }
}
?>
